import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace AiFormVariablesApi {
  /** 表单参数信息 */
  export interface FormVariables {
    id: number; // 表单变量id
    formId?: number; // 表单ID
    name?: string; // 变量名
    displayName: string; // 显示名称
    javaType: string; // 字段类型
    htmlType: string; // 表单类型
    dataType: string; // 数据类型
    defaultValue: string; // 默认值
    description: string; // 变量填写说明
    required: number; // 是否必填
    validationRules: string; // 验证规则
    sort: number; // 排序
    metadata: any; // 其他参数
    parentId: number; // 上级变量id
    displayFlag: boolean; // 是否显示
    disabled: number; // 是否可编辑
    example: string; // 示例
  }
}

/** 查询表单参数分页 */
export function getFormVariablesPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<AiFormVariablesApi.FormVariables>>(
    '/ai/form-variables/page',
    data,
    {
      desensitize,
      encrypt,
    },
  );
}

/** 查询表单参数列表 */
export function getFormVariablesList(data: any) {
  return requestClient.post<AiFormVariablesApi.FormVariables[]>(
    '/ai/form-variables/list',
    data,
  );
}

/** 查询表单参数详情 */
export function getFormVariables(id: number) {
  return requestClient.get<AiFormVariablesApi.FormVariables>(
    `/ai/form-variables/get?id=${id}`,
  );
}

/** 新增表单参数 */
export function createFormVariables(data: AiFormVariablesApi.FormVariables) {
  return requestClient.post('/ai/form-variables/create', data);
}

/** 修改表单参数 */
export function updateFormVariables(data: AiFormVariablesApi.FormVariables) {
  return requestClient.put('/ai/form-variables/update', data);
}

/** 删除表单参数 */
export function deleteFormVariables(id: number) {
  return requestClient.delete(`/ai/form-variables/delete?id=${id}`);
}

/** 批量删除表单参数 */
export function deleteFormVariablesList(ids: number[]) {
  return requestClient.delete(
    `/ai/form-variables/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出表单参数 */
export function exportFormVariables(params: any) {
  return requestClient.download('/ai/form-variables/export-excel', { params });
}
